package mx.unam.acatlan.poo.paquetes.paquete1;

import mx.unam.acatlan.poo.paquetes.paquete1.subpaquete1.ClaseSubPaquete1;


/**
 * @author Carlos Alegría
 */
/* @SuppressWarnings("unused") evita que el compilador muestre alertas sobre
 * miembros o variables declaradas, pero no utilizadas.
 * 
 * La expresión "@SuppressWarnings" se llama anotación. Las anotaciones son
 * utilizadas para proporcionar información al compilador, a herramientas de
 * desarrollo (generadores de código, diagramas, o documentación), y a código
 * cliente en tiempo de ejecución.
 * 
 * Más información sobre anotaciones en
 * http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html
 */
@SuppressWarnings("unused")
public class Clase1Paquete1 {
	
	/** */
	private int atributoPrivado;
	
	/** */
	public int atributoPublico;
	
	/** */
	int atributoDePaquete;
	
	/**
	 * 
	 */
	private void metodoPrivado() {
		System.out.println("metodo privado");
	}	
	
	/**
	 * 
	 */
	public void metodoPublico() {
		System.out.println("metodo público");
	}
	
	/**
	 * 
	 */
	void metodoDePaquete() {
		System.out.println("metodo de paquete");
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "ClasePaquete1";
	}
	
	/**
	 * @param args
	 */
	public static void main(String args[]) {
		
		// los métodos públicos tienen visibilidad desde cualquier código
		// cliente
		//
		ClaseSubPaquete1 claseSubPaquete1 = new ClaseSubPaquete1();
		claseSubPaquete1.metodoPublico();
		
		// mostramos que las variables protegidas tienen visibilidad de paquete 
		//
		Clase2Paquete1 variable = new Clase2Paquete1();
		variable.atributoProtegido = 34;
	}
}